{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ad383f6d-3316-49d5-8d93-5ceacaa38d84",
   "metadata": {},
   "source": [
    "DES 20世纪70年代\n",
    "IBM开发\n",
    "FIPS采用\n",
    "秘钥较短 56bits\n",
    "3DES 广泛使用 秘钥长 安全性好\n",
    "算法公开 秘钥保密\n",
    "谁安全，就在于谁的2^x大，谁的“雪崩效应”大"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c1cefff8-a98f-48c6-909c-be99fd21cd00",
   "metadata": {},
   "source": [
    "DES 分组密码是一个拥有16轮的 Feistel 网络，且分块长度为64比特，密钥长度为56 比特。回顾在Feistel 网络中，每一轮中使用的内部f函数一次只操作半个分块。因此，DES 轮函数的输入/输出长度就是32比特。在DES的16轮中每轮所用到的轮函数都是由同一个变形函数$f:= \\overline{{f}}$ 推导而来的。DES 的密码编排被用来从56 比特的主密钥k中获得每一轮的 48 比特的子密钥ki。如在前一节所讨论的，第i个轮函数,就被定义为fi(R）=${\\tilde{f}}(k_{i},R)$。正如从DES使用 Feistel 结构这一事实所期望的，轮函数是不可逆的。\n",
    "\n",
    "DES的密钥编排相对比较简单，每一个子密钥k;都是由主密钥估算出的 48 比特的子集。这里不精确地描述密钥编排。主密钥的 56 比特被分成两部分，即“左半部分”和“右半部分”，其中每一部分含有 28比特（事实上，这种分离发生在密钥的初始置换之后，但是这里的描述中忽略这些)。在每一轮中，子密钥最左边的 24比特被当作是主密钥左半部分 28 比特的某个子集，而子密钥最右边的 24 比特被当作主密钥右半部分 28比特的某个子集。整个密钥编排（包括比特被分为左半部分和右半部分，以及哪些比特被用来形成子密钥）都是确定和公开的，唯一机密的是主密钥本身。DES 变形函数了。前面曾经提到：变形函数了和第i个子密钥ki共同决定了第轮函数f,DES 中的变形函数是根据之前分析的范例构造出来的：它（本质上）只是一个单轮代替置换网络。\n",
    "\n",
    "再次强调上面所描述的一切（包括S盒本身以及混合置换）都是公开的。唯一保密的是用来获得所有子密钥的主密钥。S盒。构成广“核心”的8个S盒是 DES 构造方法中重要的组成部分，而且是精心设计的（据报道是在国家安全局的帮助下)。对 DES 的研究表明；如果对S盒引入一些小变化或者S盒是随机选择的，DES 将会更容易受到攻击。这应该作为对所有想设计分组密码的人一个警告：看上去随意的选择实际上完全不是随意的，如果做得不正确，则会使整个结构不安全。"
   ]
  },
  {
   "attachments": {
    "d851610c-d23b-48ab-a5f0-d868f7b6efb4.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "dd0120fb-ad8e-4a85-9ada-f7e45806cb63",
   "metadata": {},
   "source": [
    "![image.png](attachment:d851610c-d23b-48ab-a5f0-d868f7b6efb4.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "060a9ae4-7241-4ca8-b124-900ffa2f121a",
   "metadata": {},
   "source": [
    "回想一下, 每一个 $\\mathrm{S}$ 盒都将 6 比特的字符串映射到 4 比特的字符串。每一个 $\\mathrm{S}$ 盒都可以 被看作是一个 4 行 16 列的表格, 每一个单元格都含有一个 4 比特的记录。一个 6 比特的输入 可被看作是搜索表中 $2^6=64$ 个单元格的索引: 输入的第一个和最后一个比特用来选择表中行 数, 而 2 到 5 比特被用来选择表中列数。找到的单元格中的 4 比特记录表示输出值。\n",
    "\n",
    "由于其重要性, 将描述 DES 中 $\\mathrm{S}$ 盒的基本属性:\n",
    "\n",
    "*(1) 每一个 $S$ 盒都是一个 4 对 1 的函数。(也就是说, 有且只有 4 个输入被映射到每一个 可能的输出上。) 这是下面的属性所产生的。*\n",
    "\n",
    "(2) 表格的每一行恰好包含 16 种可能的 4 比特字符串中的一个。(就是说, 每一行是 16 种可能的 4 比特字符串的一个置换。)\n",
    "\n",
    "(3) 改变输入的 1 比特通常改变至少 2 个输出比特。\n",
    "\n",
    "以上的属性将用于分析后面轮数减少的 DES。\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c5362d1f-ee2f-4dc8-9bab-52dcf03520c6",
   "metadata": {},
   "source": [
    "DES 雪崩效应。如前所述, 雪崩效应是任何安全分组密码的一个重要属性。上面描述的 DES 的 $\\mathrm{S}$ 盒的第三个属性, 和在变形函数中使用的混合置换, 确保了 DES 展现出很强的雪崩 效应。为了理解这一点, (当 DES 计算两个单比特不同的输入时) 将追溯中间值的差别。用 $\\left(L_0, R_0\\right)$ 和 $\\left(L_0^{\\prime}, R_0^{\\prime}\\right)$ 来表示这两个输入, 这里假设 $R_0=R_0^{\\prime}$, 且因而唯一的一个不同的比特出 现在输入的左半部分, 参见式 (5.2)。第一轮之后中间值 $\\left(L_1, R_1\\right)$ 和 $\\left(L_1^{\\prime}, R_1^{\\prime}\\right)$ 仍然只有 1 比特 的不同, 现在这种不同是在右半部分。在 DES 的第二轮中, 输入的右半部分通过 $\\widehat{f}$ 运行。假 设 $R_1$ 和 $R_1^{\\prime}$ 不同的那一个比特在展开步骤中没有被复制, 在使用 $\\mathrm{S}$ 盒之前中间值仍然是只有 1 比特不同。由第三个属性, 在 $\\mathrm{S}$ 盒计算之后, 中间值至少有两比特不同。结果, 中间值 $\\left(L_2, R_2\\right)$ 和 $\\left(L_2^{\\prime}, R_2^{\\prime}\\right)$ 有 3 个比特不同: 在 $L_2$ 和 $L_2^{\\prime}$ 之间有 1 个比特不同（延续了 $R_1$ 和 $R_1^{\\prime}$ 之间的不 同）以及在 $R_2$ 和 $R_2^{\\prime}$ 之间有 2 个比特不同。\n",
    "\n",
    "混合置换将 $R_2$ 和 $R_2^{\\prime}$ 之间的 2 比特的不同扩展到这些字符串的不同区域。效果是，在下一 轮中, 两个不同的比特值都被输入到不同的 $\\mathrm{S}$ 盒, 结果是在中间值的右半部分有 4 个比特不 同。(在左半部分现在也有 2 比特的不同。) 与替代置换网络一样, 有一个指数效应, 因而经过了 7 轮之后期望右半郘分的所有 32 比特都受到影响（而且 8 轮之后左半部分的所有 32 个 比特也同样癶到影响)。\n",
    "\n",
    "DES 有 16 轮操作，所以雪崩效应在计算中早早就结束了。这确保了 DES 对相似的输入 生成完全不同和在起来独立的输出。DES 中的雪俞效应同样是由于对䀝合知換的慎重选择, 事实上前面嶒经表明, 随机混合置换产生非栄弱的雪前效应。\n",
    "\n",
    "\n",
    "理解更多关于 DES 构造方法和安全性的一个有用的做法是：观幖只有轮数较少的 DES 的 行为。这里将展现对 1, 2 或 3 轮操作的 DES 的变种的攻韦（回顾一下, 真正的 DES 是有 16 轮操作的)。很明显拥有 3 个或更少轮数的 DES 不可能是一个仠随机置换, 因为在仅仅 3 轮 操作之后，雪俞效应还没有完成。因此，籿有兴趣演示更难的（并且更有破坏性的）密钥㰰 复攻击，这个攻击只需使用相对少量的输入/输出对来计算密钥 $k$ 。一些攻击和在代替置换网 络的情形中看到的类似；然而, 这里将看到它们是如何攻击具体的分组密码, 而不是抽象的设计。\n",
    "\n",
    "下述所有攻市都是已知明文攻击, 敌手拥有明文/暗文对 $\\left\\{\\left(x_i, y_i\\right)\\right\\}$, 这里 $y_i=D E S_k\\left(x_i\\right)$, 密钥为 $k$ 。当描述这些玫击时, 关注一个特定的输入/输出对 $(x, y)$, 并且描述敌手可以从这一 输入/输出对上推出的密钥相关信息。继续使用之前的标记方法, 分别用 $L_0$ 和 $R_0$ 表示输入 $x$ 的 左半部分和右半部分, 用 $L_i, R_i$ 表示第 $i$ 轮之后的左半部分和右半部分。继绕用 $E$ 表示 DES 的 扩展函数，用 $f_i$ 表示在第 $i$ 轮中用到的函数, 并且用 $k_i$ 表示在第诨中用到的子密钥。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73908a39-d99a-4fe0-96b3-41a3dde50dbe",
   "metadata": {},
   "source": [
    "\n",
    "单轮 DES。在単轮 DES 中, 有 $y=\\left(L_1, R_1\\right)$, 这里 $L_1=R_0$ 且 $R_1=L_0 \\oplus f_1\\left(R_0\\right)$ 。因此 可知 $f_1$ 的一个输入/输出对; 特别是可知道 $f_1\\left(R_0\\right)=R_1 \\oplus L_0$ (注意, 所龶这些值都是已知 的）通过对输出结果 $R_1 \\oplus$ Ł $_0$ 使用混合置换的逆操作，获得含有所有来自 $\\mathrm{S}$ 盒的输出的中间 值, 这里前 4 比特是来自第一个 $\\mathrm{S}$ 盒的输出, 接下来的 4 比特是来自第二个 $\\mathrm{S}$ 盒的输出, 以 此类推。这㭇意味者有了来自每一个 $S$ 盒的输出值。\n",
    "\n",
    "考虑 (已知的) 第一个 $\\mathrm{S}$ 盒的 4 比特输出。回想每一个 $\\mathrm{S}$ 盒都是一个 4 对 1 函数, 这就 意味着对 $\\mathrm{S}$ 盒而言, 的确有 4 种可能的输入值, 会产生出给定的输出, 所有其他的 $\\mathrm{S}$ 盒也是 类似的; 梅一个此类的输入都是 6 比特长。 $\\mathrm{S}$ 盒的输入仅是对本轮中用到的密钥 $k_1$ 与 $E\\left(R_0\\right)$ 的 异或。(实际上, 对于単轮 DES 来说, $k_1$ 是唯一的密钥。）因为 $R_0$ 是已知的, 于是结论是：对 于 $k_1$ 的每个 6 比特的部分都有四种可能值 (而且可以计算它们)。这就意味䒴可能的密钥 $k_1$ 的 数量从 $2^{48}$ 减到 $2^{48 / 6}=4^8=2^{16}$ (因为 $k_1$ 的 8 个 6 比特部分中的每一个都有 4 种可能)，这已 经是一个小数目了, 所以只要对每一个不同的输入/输出对 $\\left(x^{\\prime}, y^{\\prime}\\right)$ 纭试每一种可能, 就能找到 正确的那一个。这样就获得了完整的密钥, 只用了两个已知的明文且用时约为 $2^{16}$ 。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "26e708de-d818-4ced-85c4-c60483662746",
   "metadata": {},
   "source": [
    "两轮 DES。在两轮 DES 中，输出 $y$ 和 $\\left(L_2, R_2\\right)$ 相等, 这里\n",
    "$$\n",
    "\\begin{aligned}\n",
    "& L_1=R_0 \\\\\n",
    "& R_1=L_0 \\oplus f_1\\left(R_0\\right) \\\\\n",
    "& L_2=R_1=L_0 \\oplus f_1\\left(R_0\\right) \\\\\n",
    "& R_2=L_1 \\oplus f_2\\left(R_1\\right) .\n",
    "\\end{aligned}\n",
    "$$\n",
    "注意, $L_0, R_0, L_2, R_2$ 是由给定的输入/输出对 $(x, y)$ 得知的, 因此有 $L_1=R_0$ 和 $R_1=L_2$ 。 这意味着已经知道 $f_1$ 和 $f_2$ 的输入输出, 所以攻击单轮 DES 的方法同样可以用在这里来确定 $k_1$ 和 $k_2$, 用时约为 $2 \\cdot 2^{16}$ 。即使 $k_1$ 和 $k_2$ 是完全独立的密钥, 这个攻击也同样奏效。事实上, DES的密钥编排确保了 $k_1$ 和 $k_2$ 的许多比特是相等的, 这可以被用東使攻击的速度变得更快。\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "683d5dba-c872-4100-b04f-68d7a626a34b",
   "metadata": {},
   "source": [
    "三轮 DES。如图 5.5 所示, 输出值 $y$ 等于 $\\left(L_3, R_3\\right)_{\\text {。 }}$ 因为 $L_1=R_0$ 和 $R_1=L_2$, 所以图中的 末知值只有 $R_1$ 和 $L_2$ (它们是相等的。"
   ]
  },
  {
   "attachments": {
    "da8fcc09-f189-4027-bd7e-35d8a71cf435.png": {
     "image/png": "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ohIRERXIsGHDUKtWLWzcuFHaVq1aNQQGBuZ53YULF9C9e3ckJycrOyJpGRb2pFRbt26Fm5sb3r59i9jY2Fz7DRgwAI8ePcLChQvRtm1bbN68GQBgbGyMatWqqSouERFRvr1+/RoPHz7E8uXL4e/vDwAoWbJknnfijx07Bl9fX7x8+VJVMUmL6H+/C1HhNW/eHJaWlgCAQ4cO4eXLl3B3d0fjxo1l+l25cgWTJ0/G48eP8erVKzGiEhERFcqLFy+wYcMGAIC3tzemTp2qsN/BgwexfPly3L17F05OTpg/f74qY5IWYGFPKnP79m3cvn0b1apVw4MHD+TOnzhxQoRURERERff06VOsXbsWjx8/xu7du+XOHzp0CCtXrsT169cBAFZWVujVq5eqY5KGY2FPKhcWFoawsLDv9nNyckKnTp1UkIiIiKjg2rZti9evX+PZs2cAgOfPn+P58+dy/U6ePInAwEDcuHFD1RFJy7CwJ7VVr149TJ48WewYRERECo0dOxb379+XFva5WbZsmYoSkbbjw7OkdJUqVYKFhYXYMYiIiATn4OCAsmXLFugaU1NTODs7KykRaTMW9qR0W7ZsQceOHQt0TcmSJVG6dGklJSIiIhKGn58fhg0bVqBrPD098ccffygpEWkzFvakln777TcEBASIHYOIiIio2GBhT0RERESkAVjYExERERFpABb2pBKTJ09G796989V3+PDh8PHxUXIiIiIiYQwcOBDjx48XOwYRC3tSjerVq8PR0TFffZ2dnblbABERFRtOTk6oVq1avvr+9NNPGDNmjJITkbZiYU9ERESkIi4uLmjRooXYMUhDsbAnlWnUqBG/mREREREpCQt7UplOnTqhe/fuefapV68el+EQERERFQILe1Irv//+Ozp37ix2DCIiogKxtrZGlSpV8uzj4OCA8uXLqygRaSN9sQMQERERFXfe3t4wMDBAhw4dcu0zcuRI+Pr6qjAVaRvesSciIiIi0gAs7EmlfvvtNxw6dEjsGEREREQah0txSKV0dHSgp6cndgwiIiKVWrVqFQYOHCh2DNJwvGNPamP9+vXw9PQUOwYREVGhNGnSBDt27FB4zsrKCqampipORNqGhT2pjVq1asHKykrsGERERIViYWEBd3d3sWOQFmNhTypXs2ZNjBs3TuwYREREKuHj44O6deuKHYO0AAt7UrnK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"
    }
   },
   "cell_type": "markdown",
   "id": "93247c1b-e4a6-4644-b410-445f5e4ec5ae",
   "metadata": {},
   "source": [
    "![image.png](attachment:da8fcc09-f189-4027-bd7e-35d8a71cf435.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4a03ac59-965c-4730-942e-312846377dee",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "\n",
    "现在不再有任何函数 $f_i$ 的输入/输出了。例如, 考虑 $f_2$ 。在这种情况下, 输出值等于 $L_1 \\oplus R_2$, 这里两个值都是已知的。然而, 不知道 $f_2$ 的输入值 $R_1$ 。的确知道 $R_1=L_0 \\oplus f_1\\left(R_0\\right)$ 以及 $R_1=R_3 \\oplus f_3\\left(R_2\\right)$, 但是 $f_1$ 和 $f_3$ 的输出值都是末知的。类似的实践表明：对于 $f_1$ 和 $f_3$ 只能 确定䢁入，而不能确定输出。因此，破解单轮和两轮 DES 时所用的攻击在这里就不起作用了。 不依赖某轮函数的输入和输出的全部信鄎，我们将利用 $f_1$ 和 $f_3$ 的输入和输出之间的某种关 系。枧察到 $f_1$ 的轩出等于 $L_0 \\oplus R_1=L_0 \\oplus L_2, f_3$ 的输出等于 $L_2 \\oplus R_3$ 。这意味着 $f_1$ 的输出和 $f_3$ 的轩出的异或等于\n",
    "$$\n",
    "\\left(L_0 \\oplus L_2\\right) \\oplus\\left(L_2 \\oplus R_3\\right)=L_0 \\oplus R_3\n",
    "$$\n",
    "\n",
    "也就是说, $f_1$ 和 $f_3$ 输出的异或是已知的。此外, $f_1$ 的输入是 $R_0$ 并且 $f_3$ 的输入是 $L_3$, 两者 都是已知的。因此结论是可以确定 $f_1$ 和 $f_3$ 的输入, 以及它们输出的异或。现在描述一种基于这 些信息的能发现密钥的攻击。 “右半部分”, 用 $k_R$ 表示, 每一个包含 28 比特。此外, 每轮中用到的子密钥的最左比特是从 $k_L$ 取得, 并且每一个子密钥的最右比特从 $k_R$ 取得。这意味羞在任何一轮中主密钥的左半部分只 影响前 4 个 $\\mathrm{S}$ 盒的输入, 而主密钥的右半部分只影响后 4 个 $\\mathrm{S}$ 盒的输入。因为混合罟换是已知的, 所以同样知道每轮函数输出的哪些比特是来自每个 $\\mathrm{S}$ 盒的。\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e3693945-48d1-4c6f-a8c1-205f76b469b3",
   "metadata": {},
   "source": [
    "什么是差分密码分析？\n",
    "差分密码分析（Differential Cryptanalysis）是一种密码分析方法，主要用于破解分组密码，但也适用于流加密和加密哈希函数。差分密码分析的目标是获得加密的子密钥。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cff672e5-3aef-4aba-8204-56ff46cd844b",
   "metadata": {},
   "source": [
    "差分密码分析的一个简单示例是，假设我们有两个明文P和P’，它们的差异为ΔP，它们的密文分别为C和C’，它们的差异为ΔC。如果ΔP和ΔC之间存在某种关系，则可以推断出密钥。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2467a940-740a-4f52-93c8-26b85741e785",
   "metadata": {},
   "source": [
    "线性密码分析是一种密码分析方法，通过分析S盒的线性特性，发现明文比特、密文比特和密钥比特之间可能存在的概率线性关系，即存在一个比特子集使得其中元素的异或表现出非随机的分布来进行分析的密码分析方法。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "34519ec7-e3ed-41d3-897a-8bd164b90781",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "6c69dbbe-d253-4933-a5f3-888d72013a73",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "72c33ea7-b0e0-4690-ab94-aa7912457f96",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "07eefb48-a8a6-4306-aa3f-cf0d0ff50986",
   "metadata": {},
   "source": [
    "P116 穷举仍然是最终要的攻击"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a48d947-e9b4-4fd1-9b7e-35d32daee653",
   "metadata": {},
   "source": [
    "DES加密算法属于哪种安全？"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6994d944-126b-4686-b3c6-da38e2640c5b",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "f295592b-1eca-4df9-962d-b14e87845296",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "f38a672d-a064-4332-abf0-3df2527f1973",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "c45fa314-b481-46ac-92d1-9682a12f639f",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "93f93d06-8566-415a-b6e1-f76c0aa54e7b",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "7457feae-5506-405f-8a51-453fff05f419",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "5e9952b1-0760-4781-8092-59f4b8041525",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "4dabb469-3f88-4587-aeeb-682039e6407e",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
